<?php

Class ResolutionsController extends AppController {

    public $name = 'Resolutions';
    var $components = array('RequestHandler');
    var $helpers = array('Js' => array('jquery'));

    function index() {
        $this->layout = "ajax";
        $this->set("codigo", $this->Session->read('cod'));
        $proyect_id = $this->Session->read('proy_id');
        $this->set('proyect_id', $proyect_id);

        App::Import('model', 'Proyect');
        $proyect = new Proyect();
        $publicado = $proyect->field('Proyect.publicado', array('Proyect.id' => $proyect_id));

        if ($proyect_id == "") {
            $this->Session->setFlash('No ha seleccionado Proyecto');
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        } else {
            if ($publicado == 1) {
                $this->paginate = array('Resolution' => array('maxLimit' => 20, 'limit' => 20, 'fields' => array('Resolution.id', 'Resolution.fecha', 'Resolution.numero')));
                $this->set('Resolutions', $this->paginate(array('Resolution.proyect_id' => $proyect_id)));
            } else {
                $this->Session->setFlash('Este proyecto aún no ha sido publicado.', 'flash_custom');
                $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
            }
        }
    }

    function add($proyect_id) {
        $this->set('proyect_id', $proyect_id);
        if (empty($this->data)) {

            $this->Resolution->Proyect->FinalEvaluation->recursive = -1;
            if ($evaluation = $this->Resolution->Proyect->FinalEvaluation->find('first', array('conditions' => array('FinalEvaluation.proyect_id' => $proyect_id), 'order' => array('FinalEvaluation.id DESC'), 'fields' => array('FinalEvaluation.familias_habilitadas', 'FinalEvaluation.id', 'FinalEvaluation.calificacion_elegibilidad_integral')))) {
                if ($evaluation['FinalEvaluation']['calificacion_elegibilidad_integral'] == "Elegible") {




                    $condicionamientos = $this->Resolution->Proyect->FinalEvaluation->EvaluationConstraint->find('count', array('conditions' => array('final_evaluation_id' => $evaluation['FinalEvaluation']['id'], 'EvaluationConstraint.calificacion != ' => 'LEVANTADO')));
                    if ($condicionamientos > 0) {
                        $this->Session->setFlash("Este proyecto tiene condicionamientos sin levantar ");
                        $this->redirect(array('controller' => 'Resolutions', 'action' => 'index'));
                    }

                    App::Import('model', 'Property');
                    App::Import('model', 'PropertyFinalReview');

                    $property = new Property();
                    $propertyFinalReview = new PropertyFinalReview();
                    $property->recursive = -1;
                    $propertyFinalReview->recursive = -1;
                    $predios = $property->find('all', array('conditions' => array('Property.proyect_id' => $proyect_id), 'fields' => array('Property.id')));

                    $cumpleRevisionesPredios = true;

                    foreach ($predios as $predio) {
                        if ($cumpleRevisionesPredios == true) {
                            $ultimaRevision = $propertyFinalReview->find('first', array('conditions' => array('PropertyFinalReview.property_id' => $predio['Property']['id']), 'fields' => array('PropertyFinalReview.calificacion'), 'order' => array('PropertyFinalReview.id' => 'DESC')));
                            if ($ultimaRevision['PropertyFinalReview']['calificacion'] != 'Cumple') {
                                $cumpleRevisionesPredios = false;
                            }
                        }
                    }

                    if (!$cumpleRevisionesPredios) {
                        $this->Session->setFlash("A los predios de este proyecto le hacen falta revisiones, o no todas tienen concepto cumple. Se tiene en cuenta la ultima revisión hecha.");
                        $this->redirect(array('controller' => 'Resolutions', 'action' => 'index'));
                    }

                    $this->Resolution->Proyect->Candidate->recursive = -1;
                    $this->data['Resolution']['final_evaluation_id'] = $evaluation['FinalEvaluation']['id'];
                } else {
                    $this->Session->setFlash('Este proyecto no ha sido calificado como elegible');
                    $this->redirect(array('controller' => 'Resolutions', 'action' => 'index'));
                }
            } else {
                $this->Session->setFlash('No se ha realizado evaluación final a este proyecto');
                $this->redirect(array('controller' => 'Resolutions', 'action' => 'index'));
            }
        } else {
            if ($this->Resolution->save($this->data)) {
                $this->Session->setFlash('Registro Adicionado correctamente');
                $this->redirect(array('controller' => 'Resolutions', 'action' => 'index'));
            } else {
                $this->Session->setFlash('Error Guardando datos');
            }
        }
    }

    function edit($resolution_id) {
        $proyect_id = $this->Session->read('proy_id');
        $this->set('resolution_id', $resolution_id);
        $this->Resolution->recursive = -1;

        $codigo = $this->Resolution->Proyect->field('codigo', array('Proyect.id' => $proyect_id));

        if (empty($this->data)) {
            $this->data = $this->Resolution->find('first', array('conditions' => array('Resolution.id' => $resolution_id)));
        } else {

            if ($this->Resolution->save($this->data)) {

                if (stristr($this->data['Resolution']['archivo']['name'], ".pdf")) {

                    $codigo = $this->Session->read('cod');
                    $rutaArchivo = APP . "webroot" . "/" . "files" . "/" . $codigo;
                    if (!is_dir($rutaArchivo)) {
                        if (!mkdir($rutaArchivo)) {
                            echo "error creando archivo";
                            //redirect
                        }
                    }
                    $nombreArchivo = "SoporteResolucion-$codigo-$resolution_id.pdf";
                    $rutaArchivo.= "/" . $nombreArchivo;
                    if (move_uploaded_file($this->data['Resolution']['archivo']['tmp_name'], $rutaArchivo)) {
                        $this->Resolution->id = $this->data['Resolution']['id'];
                        $this->Resolution->saveField('adjunto', 1);
                        $this->Session->setFlash('Registro Adicionado correctamente con archivo');
                        $this->redirect(array('controller' => 'Resolutions', 'action' => 'index', $this->data['Resolution']['proyect_id']));
                    }
                }
                $this->Session->setFlash('Registro Adicionado correctamente');
                $this->redirect(array('controller' => 'Resolutions', 'action' => 'index', $this->data['Resolution']['proyect_id']));
            } else {
                $this->Session->setFlash('Error Guardando datos');
                $this->redirect(array('controller' => 'Resolutions', 'action' => 'index', $this->data['Resolution']['proyect_id']));
            }
        }
    }

    function print_letter($resolution_id) {
        $this->layout = "ajax";
        $proyect_id = $this->Session->read('proy_id');
        $this->set('proyect_id', $proyect_id);

        $options = array();
        $options['joins'] = array(
            array(
                'table' => 'proyects',
                'type' => 'left',
                'alias' => 'Proyect',
                'conditions' => array('Proyect.id=Resolution.proyect_id'),
            ),
            array(
                'table' => 'calls',
                'type' => 'left',
                'alias' => 'Call',
                'conditions' => array('Call.id=Proyect.call_id'),
            ),
            array(
                'table' => 'branches',
                'type' => 'left',
                'alias' => 'Branch',
                'conditions' => array('Branch.id=Proyect.branch_id'),
            ),
            array(
                'table' => 'cities',
                'type' => 'left',
                'alias' => 'City',
                'conditions' => array('City.id=Proyect.city_id'),
            )
            ,
            array(
                'table' => 'departaments',
                'type' => 'left',
                'alias' => 'Departament',
                'conditions' => array('City.departament_id=Departament.id'),
            )
        );
        $options['conditions'] = array('Resolution.id' => $resolution_id);
        $options['fields'] = array('Departament.capital', 'Resolution.reviso', 'Resolution.final_evaluation_id', 'Resolution.proyecto', 'Departament.name', 'City.name', 'Branch.director', 'Proyect.codigo', 'Proyect.id', 'Resolution.id', 'Resolution.fecha', 'Resolution.numero', 'Resolution.final_evaluation_id', 'Call.nombre', 'Branch.nombre');
        $this->Resolution->recursive = -1;
        $resolucion = $this->Resolution->find('first', $options);

        $condicionamientos = $this->Resolution->Proyect->FinalEvaluation->EvaluationConstraint->find('count', array('conditions' => array('final_evaluation_id' => $resolucion['Resolution']['final_evaluation_id'], 'EvaluationConstraint.calificacion != ' => 'LEVANTADO')));
        $condicionadoArea = false;

        if ($condicionamientos > 0) {
            $this->Session->setFlash("Este proyecto tiene condicionamientos sin levantar ");
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        } else {
            $conteo = $this->Resolution->Proyect->FinalEvaluation->EvaluationConstraint->find('count', array('conditions' => array('final_evaluation_id' => $resolucion['Resolution']['final_evaluation_id'], 'Constraint.id' => 4)));
            if ($conteo > 0) {
                $condicionadoArea = true;
            }
            $this->Resolution->Proyect->Property->recursive = -1;
            $predios = $this->Resolution->Proyect->Property->find('all', array('conditions' => array('Property.proyect_id' => $proyect_id), 'fields' => array('Property.codigo','Property.area_titulo', 'Property.id', 'Property.nombre', 'Property.oficina_instrumentos', 'Property.matricula', 'Property.nombre', 'City.name', 'Departament.name'), 'joins' => array(array('table' => 'cities', 'type' => 'left', 'alias' => 'City', 'conditions' => array('Property.city_id=City.id')), array('table' => 'departaments', 'type' => 'left', 'alias' => 'Departament', 'conditions' => 'Departament.id=City.departament_id'))));
            $this->Resolution->Proyect->FinalEvaluation->recursive = -1;
            $evaluacion = $this->Resolution->Proyect->FinalEvaluation->find('first', array('conditions' => array('FinalEvaluation.id' => $resolucion['Resolution']['final_evaluation_id']), 'fields' => array('FinalEvaluation.id', 'FinalEvaluation.calificacion_elegibilidad_integral', 'FinalEvaluation.familias_habilitadas', 'FinalEvaluation.nombre_proyecto', 'FinalEvaluation.subsidio_proyecto_real', 'FinalEvaluation.subsidio_predios_real')));
            $this->set('predios', $predios);
            $this->set('resolucion', $resolucion);
            $this->set('evaluacion', $evaluacion);
            $this->set('condicionadoArea', $condicionadoArea);
        }
    }

    function comunication_letter($resolution_id) {
        $this->layout = 'pdf';
        
        $options = array();
        $options['joins'] = array(
            array(
                'table' => 'proyects',
                'type' => 'left',
                'alias' => 'Proyect',
                'conditions' => array('Proyect.id=Resolution.proyect_id'),
            ),
            array(
                'table' => 'calls',
                'type' => 'left',
                'alias' => 'Call',
                'conditions' => array('Call.id=Proyect.call_id'),
            ),
            array(
                'table' => 'branches',
                'type' => 'left',
                'alias' => 'Branch',
                'conditions' => array('Branch.id=Proyect.branch_id'),
            ),
            array(
                'table' => 'cities',
                'type' => 'left',
                'alias' => 'City',
                'conditions' => array('City.id=Proyect.city_id'),
            )
            ,
            array(
                'table' => 'departaments',
                'type' => 'left',
                'alias' => 'Departament',
                'conditions' => array('City.departament_id=Departament.id'),
            )
        );
        $options['conditions'] = array('Resolution.id' => $resolution_id);
        $options['fields'] = array('Departament.capital', 'Resolution.numero','Resolution.fecha', 'Resolution.final_evaluation_id', 'Departament.name', 'City.name', 'Branch.director','Branch.direccion', 'Proyect.codigo', 'Proyect.id', 'Resolution.id', 'Resolution.final_evaluation_id', 'Call.nombre', 'Branch.nombre','Branch.director');
        $this->Resolution->recursive = -1;
        $resolucion = $this->Resolution->find('first', $options);
        $evaluacion = $this->Resolution->Proyect->FinalEvaluation->find('first', array('conditions' => array('FinalEvaluation.id' => $resolucion['Resolution']['final_evaluation_id']), 'fields' => array('FinalEvaluation.id', 'FinalEvaluation.familias_habilitadas')));
        App::Import('model', 'Candidate');
        $Candidate = new Candidate();
        $Candidate->recursive = -1;
        $aspirantes = $Candidate->find('all', array('conditions' => array('Candidate.proyect_id' => $resolucion['Proyect']['id'], 'Candidate.jerarquia !=' => 0, 'Candidate.estado_filtro' => array(1, 5), 'Candidate.renuncio' => 0), 'fields' => array('Candidate.id', 'Candidate.tipo_ident', 'Candidate.nro_ident', 'Candidate.1er_apellido', 'Candidate.2do_apellido', 'Candidate.1er_nombre', 'Candidate.2do_nombre', 'Candidate.jerarquia','Candidate.telefono','Candidate.direccion'), 'order' => array('Candidate.jerarquia ASC')));

        $this->set('resolucion', $resolucion);
        $this->set('aspirantes', $aspirantes);
        $this->set('evaluacion', $evaluacion);
    }

}

?>
